const { app, BrowserWindow, Tray, nativeImage } = require('electron');
const path = require('path');

let mainWindow;
let tray;
let isBlinking = false;
let blinkInterval;

function createWindow() {
    mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            nodeIntegration: true,
            preload: path.join(__dirname, 'preload.js')
        },
    });

    mainWindow.loadFile('index.html');

    // 关闭窗口时不退出应用
    mainWindow.on('closed', () => {
        mainWindow = null;
    });
}

app.on('ready', () => {
    // 创建托盘图标
    const iconPath = path.join(__dirname, 'icon.png'); // 请替换为你的图标路径
    tray = new Tray(iconPath);
    tray.setToolTip('My Electron App');

    // 启动闪烁
    startBlinking();

    // 处理托盘图标点击事件
    tray.on('click', () => {
        if (mainWindow) {
            mainWindow.isVisible() ? mainWindow.hide() : mainWindow.show();
        } else {
            createWindow();
        }
    });
});

function startBlinking() {
    isBlinking = true;
    let icon1 = nativeImage.createFromPath(path.join(__dirname, 'icon1.png')); // 替换为闪烁的第一个图标
    let icon2 = nativeImage.createFromPath(path.join(__dirname, 'icon2.png')); // 替换为闪烁的第二个图标

    let toggle = true;
    blinkInterval = setInterval(() => {
        tray.setImage(toggle ? icon1 : icon2);
        toggle = !toggle;
    }, 500); // 每500毫秒切换一次图标
}

app.on('window-all-closed', () => {
    // 在macOS上，应用和它的菜单栏不会在所有窗口关闭时退出
    if (process.platform !== 'darwin') {
        app.quit();
    }
});

app.on('activate', () => {
    // 在macOS上，当点击dock图标并且没有其他窗口打开时，常常会在应用中重新创建一个窗口
    if (mainWindow === null) {
        createWindow();
    }
});

// 应用退出时清理定时器
app.on('before-quit', () => {
    clearInterval(blinkInterval);
});